import re

def split_judgment_by_keywords(text):
    # 定义分割模式（支持多个关键词，按优先级排序）
    pattern = r'(\n|^)(案由：|经审理查明|本院认为|判决如下|裁判要旨|书记员：)'
    
    # 使用 re.split 分割文本，并保留分隔符
    parts = re.split(pattern, text, flags=re.DOTALL)
    
    # 清理空字符串和非关键块（如换行符）
    parts = [p.strip() for p in parts if p and p.strip() not in ['\n', '']]
    
    # 将分割结果整理为字典：{区块标题: 内容}
    sections = {}
    current_title = "头部信息"  # 初始区块
    for part in parts:
        if part in ["案由：", "经审理查明", "本院认为", "判决如下"]:
            current_title = part.replace("：", "")  # 更新当前区块标题
            sections[current_title] = []           # 初始化内容列表
        else:
            if current_title in sections:
                sections[current_title].append(part)
            else:
                # 处理头部信息（标题、案号等）
                sections.setdefault(current_title, []).append(part)
    
    # 合并列表中的文本片段
    sections = {k: "\n".join(v) for k, v in sections.items()}
    return sections

# 示例文本
text = """
民事判决书
（2023）京0101民初123号
原告：张三，男，1990年出生...
被告：李四有限公司...
案由：买卖合同纠纷
经审理查明：
原告与被告于2022年签订合同...
本院认为：
被告行为构成违约...
判决如下：
一、被告支付货款10万元...
书记员：王五
"""

result = split_judgment_by_keywords(text)
for key, value in result.items():
    print(f"【{key}】\n{value}\n{'-'*30}")
